#!/bin/bash

# 设置阈值（超过该阈值则触发报警）
diskThreshold=85
memoryThreshold=85
networkThreshold=90

##ip
# checkIp="$(hostname -I)"
checkIp="172.16.0.14应用/中间件服务器"
# 加载send方法
source /data/bash/early_warn_send.sh


# 硬盘检查
# 初始化一个空数组来存储超过90%使用率的路径和使用率  
over_disk_percent=() 
eval "$(df -h | awk 'NR>1 && $5 ~ /[0-9]{2,}%$/ && substr($5,0,length($5)-1)+0 > '"${diskThreshold}"' {printf "over_disk_percent+=(\\\"%s: %s\\\")\n", $6, $5}')"
# 检查数组是否为空
if [ ${#over_disk_percent[@]} -gt 0 ]; then
    # 构造通知内容  
    msg="${checkIp}硬盘使用率超过${diskThreshold}% "
    msg_body=$msg  
    for (( i=0; i<${#over_disk_percent[@]}/2; i++ )); do  
        msg_body+=" ${over_disk_percent[$i*2]}-${over_disk_percent[$i*2+1]} "  
    done  
    # 发送消息  
    sendMsg $msg
    echo "$(date +"%Y-%m-%d %H:%M:%S.%3N") 硬盘状态异常：$msg_body" >> ${log_path}${log_file}
else  
    echo "$(date +"%Y-%m-%d %H:%M:%S.%3N") 硬盘状态正常" >> ${log_path}${log_file}
fi


# 内存检查
# 获取总的物理内存和可用内存（以MB为单位） 
total_mem=$(free -m | grep Mem | awk '{print $2}')
available_mem=$(free -m | grep Mem | awk '{print $7}')
used_mem=$((total_mem - available_mem))  
mem_usage=$((used_mem * 100 / total_mem))  
# 检查内存使用率是否超过阈值  
if [ "$mem_usage" -gt "$memoryThreshold" ]; then  
    # 构造通知内容  
    msg="${checkIp}内存使用率超过${memoryThreshold}%"
    # 发送消息  
    sendMsg $msg
    echo "$(date +"%Y-%m-%d %H:%M:%S.%3N") 内存状态异常：$msg" >> ${log_path}${log_file}
else
    echo "$(date +"%Y-%m-%d %H:%M:%S.%3N") 内存状态正常" >> ${log_path}${log_file}
fi


# 消息换行
echo "" >> ${log_path}${log_file}

